//第一步:引入插件
import VueRouter from "vue-router";
//第二步：引入Vue
import Vue from "vue";
//第三步：使用插件
Vue.use(VueRouter);

import routes from '@/router/routes'

//注意:虽然是重写push|replace方法,最终实现路由跳转与传递参数，起始还是用人家原来的push方法

//先把人家原有备份一份--原始push
let originPush = VueRouter.prototype.push;

//备份原始replace
let originReplace = VueRouter.prototype.replace;

//重写push方法
VueRouter.prototype.push = function (location, resolve, reject) {
  //面试题:call与apply区别?
  //相同点:都可以让当前函数执行一次
  //不同点：call传递参数用逗号隔开，apply，传递参数数组
  //call第一个参数:this
  if (resolve && reject) {
    originPush.call(this, location, resolve, reject);
  } else {
    originPush.call(this, location, () => { }, () => { });
  }
}

//重写replace方法
VueRouter.prototype.replace = function (location, resolve, reject) {
  //判断
  if (resolve && reject) {
    originReplace.call(this, location, resolve, reject);
  } else {
    originReplace.call(this, location, () => { }, () => { });
  }
}


//箭头函数
const withRouter = () => {
  return new VueRouter({
    //一个路由器:管理多个路由
    routes,
    //滚动行为:当路由进行切换跳转的时候，可以设置滚动条的位置
    scrollBehavior(){
      //这里可以设置x轴，目前咱们项目没有x轴
      return {y:0};
    }
  })
}


//第四步：暴露VueRouter类的实例
export default withRouter();